import { Component, Input, OnInit } from '@angular/core';
import { SFSchema } from '@delon/form';
import { HttpClient } from '@angular/common/http';
import { NzMessageService, NzModalRef } from 'ng-zorro-antd';
import { FormBuilder, FormGroup } from '@angular/forms';
import { format } from 'date-fns'

@Component({
  selector: 'app-select-date',
  templateUrl: './select-date.component.html',
  styles: []
})
export class SelectDateComponent implements OnInit {
  @Input()
  set _param(value) {
    if (!value) return;
    this.param = value;
  };
  
  param: any;
  showForm = false;
  num:number=4;//0今天，1昨天，2前天。

  schema: SFSchema = {
    properties: {
      date: {
        type: 'string',
        title: '日期',
        // format:'date',
        ui:{
          widget:"date",
          format:'YYYY-MM-DD',
          liveValidate:false
        }
      },
    },
    required: []
  }
  
  formSubmit(data) {
    if(!data.date){
      this.msg.error("请选择日期")
      return
    }
    this.getLog(data.date)
  }


  //获取日志处理逻辑
  getLog(date){
    this.num=4
    //http://110.42.239.214:9000/image-storage/doc/设备号/日期.txt（格式=20220316.txt
    //先组装文件路径，再去判断此文件是否存在，如果存在直接下载，不存在的话分为两种情况,这个时候判断日期是否是最近三天，
    //1.最近三天：调用接口下发设备上传日志的命令  2.不是最近三天，直接提示文件不存在
    const newDate=date.split("-").join("")
    const filePath=`https://www.xtxspmj.com/image-storage/doc/${this.param.deviceCode}/${newDate}.txt?${Date.now()}`
    console.log(this.isExistFile(filePath))
    this.checkDate(date)
    console.log(this.num)
    // if(this.num == 0){//当天
    //   this.sendOrder(newDate)
    // }
    // if(this.isExistFile(filePath)){//文件存在
    //   window.location.href=filePath
    // }else{//文件不存在
    //   if(this.checkDate(date) && this.num != 0){//是最近三天,但不是当天
    //     this.sendOrder(newDate)
    //   }else{//不是最近三天
    //     this.msg.error("文件不存在!")
    //   }
    // }
    if(this.checkDate(date)){//是最近三天
      this.sendOrder(newDate)
      if(this.isExistFile(filePath)){//文件存在
          this.msg.success("下载成功!")
          window.location.href=filePath
        }
    }else{//不是最近三天
      this.msg.error("文件不存在!")
    }
  }

  //判断选择的日期是否是最近三天
  checkDate(d){
      let td:any = new Date();
      td = new Date(td.getFullYear(), td.getMonth(), td.getDate());
      let od:any = new Date(d);
      od = new Date(od.getFullYear(), od.getMonth(), od.getDate());
      let xc = (od - td) / 1000 / 60 / 60 / 24;
      if (xc < -2) {
       return false
      } else if (xc < -1) {//前天
        this.num=2
       return true
      } else if (xc < 0) {//昨天
        this.num=1
       return true
      } else if (xc == 0) {//今天
        this.num=0
       return true
      } else if (xc < 2) {
       return false
      } else if (xc < 3) {
       return false
      } else {
       return false;
      }
  }
   /**
   * 判断服务的文件是否存在
   * @param filepath 文件地址
   * @param filename
   * @returns {Boolean}  
   */
    isExistFile(filepath){
      var xmlhttp;
      if ((window as any).XMLHttpRequest){
        xmlhttp=new XMLHttpRequest();
      }
      xmlhttp.open("GET",filepath,false);
      xmlhttp.send();
      if(xmlhttp.readyState === 4){
      if(xmlhttp.status === 200) return true; //url存在
      else if(xmlhttp.status === 404) return false; //url不存在
      else return false;//其他状态
  }
}

  //下发设备上传日志的命令
  sendOrder(num){
    const body={
      sn:this.param.deviceCode,
      date:num
    }
    this.http.request<any>('post', '/core/host/downloadLog',{body}).subscribe(res => {
      console.log(res)
      if (res.status === '200') {
        this.msg.success('已下发设备上传日志命令');
      } else {
        this.msg.error(res.message)
      }
    })
  }
  constructor(
    private http: HttpClient,
    private msg: NzMessageService,
    private modalRef: NzModalRef,
    private fb: FormBuilder
  ) { }

  ngOnInit() {
    this.showForm = true;
  }

}
